home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The X-Philes (2nd Revision)
/
The X-Philes Number 1 (1995).iso
/
xphiles
/
hp48hor2
/
srplgrob.doc
< prev
next >
Wrap
Text File
|
1995-03-31
|
6KB
|
140 lines
(Comp.sys.hp48)
Item: 2346 by stvlin04@uctvax.uct.ac.za [Richard Steventon]
Subj: Include a GROB in SYS-RPL & ML (DOC)
Date: 24 Oct 1993
Well, since there have been several queries in this newsgroup about how to
include a grob in SYS-RPL source for RPLCOMP, I thought that I would post
the following doc that has resulted from help that I received.
Thanks to Detlef and Fatri.
There are two source files included below. They APPEAR to work fine on
my (and have only been tested on) Revision E 48sx. Use them however you
see fit.
BEGIN SYS-RPL_EXAMPLE
*****************************************************************************
* Modulname: Include_Grob
* Modultype: User level secondary
* Dest.Comp.: HP48
* Language: System RPL ____
* Author: Richard Steventon, Cape Town /\_/ \_/\
* Interface: (-->)
* Description:
* Edition History : First included with Lemming (by DM) and later both with
* : TETRIS (also by Detlef)
*****************************************************************************
TITLE Include Grob v 1.0
ASSEMBLE
NIBASC /HPHP48-E/ Binary download header
RPL
ASSEMBLE
******************************************************
** Macro to show grob on screen **
MKGROB MACRO * x,y
CON(5) =DOGROB * prolog
CON(5) 15+(($1+7)/8)*$2*2 * compute size
CON(5) $2 * height
CON(5) $1 * length
MKGROB ENDM
******************************************************
RPL
::
CK0NOLASTWD ( * Zero Arguments * )
ClrDA1IsStat ( * Suspend clock * )
TURNMENUOFF
CLEARVDISP ( * Clear the display * )
ASSEMBLE
MKGROB 128,25 * grob 128 x 25
NIBHEX 0CFFFDEFFFF10C06CF9168910EFEFDF30EFF7C0CFFF30C06EF9168910
NIBHEX FFEFDF30EFF1E00FFF30C0660816891030030600EFF0600EFF30C0660
NIBHEX 83FC91030030600EF70600CFF30CF7EF03FC810F7030600EF307008FF
NIBHEX 30CF7EF0FFF810F7030600EF303008FF30C06600E9781030030600EF1
NIBHEX 03000FF30C06600E9781030030600EF18F3F3FF30C06EF1C038F3FF03
NIBHEX 0600EF08F3F7EF30C06CF1C030F3EF030600EF081336EF30000000000
NIBHEX 00000000000EF0C9B37EF3000000000000000000000EF0C8913EF3000
NIBHEX 000000000000000000EF0C8913EF3000000000000000000000EF0ECD9
NIBHEX 3EF3000000000000000000000EF16CC81FF30CF1810F3683818F3CF10
NIBHEX EF16CCF1FF30CF3818F76C1818F7CF30EF37EEF0FF30C03C38166E0C3
NIBHEX 816C030EF300608FF30C03C3810670C3816C030EF700608FF30C03668
NIBHEX 10E3066816C030EFF0070CFF30CF366810E30668F3C030EFF1030EFF3
NIBHEX 0CF1FF810670FF8F3C030EFF3030FFF30C00FF8166E0FF816C030EFFF
NIBHEX 81CFFF30C003C8F76C13C816CF30CFFFBDFFFF10C003C0F36833C816CF1
RPL
ABUFF ZERO TWENTY GROB! ( * copy grob over screen at 0,20 * )
SetDA123NoCh ( * Freeze display until keypress * )
;
*****************************************************************************
END SYS-RPL_EXAMPLE
BEGIN ML_EXAMPLE
*****************************************************************************
* Modulname: grob
* Modultype: User level secondary
* Dest.Comp.: HP48
* Language: SASM ____
* Author: Richard Steventon , Cape Town /\_/ \_/\
* Interface: (-->)
* Description: writes to the screen a grob object whose data is in the
code
* body
* Edition History : 13-08-93 asked Fatri Mohammed how to do it
* : 17-08-93 wrote this file as an eg
*****************************************************************************
TITLE ML Display Grob v1.0
ASSEMBLE
NIBASC /HPHP48-E/ Binary download header
RPL
CODE
GOSBVL =SAVPTR * save registers
D0=(5) =VDISP * pointer to address of stack grob
C=DAT0 A * get address
LA(5) 20+34*21+11 * add prolog(20) + lines down(21) + offset(11)
C=C+A A * add them
CD0EX * put resulting address in D0
* The next instruction is a GOSUB and the return address is stored
* in RSTK ie the adddress of the following instruction (in this case
* it is the grob data)
GOSUB next
NIBHEX EFFF6FFFFF00FFF360EFFF10FFF0708FFF10FF70300FFF10FF30300EFF10
NIBHEX FF18300CFF10FF18100CFF10FF081008FF10FF0CF9F9FF10F70CF9F3FF10
NIBHEX F70C8913FF10F70ECD93FF10F706CC81FF10F706CC81FF10F707EEC1FF10
NIBHEX FF0366C8FF10FF036EF8FF10FF937F78FF10FF10030CFF10FF30030CFF10
NIBHEX FF70830EFF10FFF0810FFF10FFF1818FFF10FFF7C0EFFF10EFFFDEFFFF00
next C=RSTK * get address of grob data from RSTK
CD1EX * put address in D1
* D1 is address of grob data
* D0 is address of offset in screen
LA(2) 25-1 * counter (grob has 25 rows to write in loop)
loop C=DAT1 12 * grob is 12 nibs wide so get first row
DAT0=C 12 * write first row
D1=D1+ 12 * point to next 12 nibs of data
D0=D0+ 16 * \
D0=D0+ 16 * > point to next line on screen
D0=D0+ 2 * /
A=A-1 B * decrement loop counter
GONC loop * do until carry, then continue (exit)
GOVLNG =GETPTRLOOP * restore registers
ENDCODE
******************************************************************************
END ML_EXAMPLE
Hopefully there are no mistakes. Please notice that the ML one is only a
single Code object with the grob data included in it.
Any questions? Feel free to Email me and I will help you as much as I can.
-Bye
-Richard